package com.itttq.gshop.domain.to;

import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;

/**
 * 返回给页面展示的对象，此处只返回消息
 * 
 * @createTime: Mar 31, 2014 6:02:19 PM
 * @author: <a href="mailto:gaoxvguo060@haopinfeng.com">高绪国</a>
 * @version: 0.1
 * @changesSum:
 * 
 */
public class ResultTo implements Serializable{
	private static final long serialVersionUID = 6063843020733722044L;

	/** 错误码说明：<br>
	 * 1表示成功，其余表示异常<br>
	 * 各个业务系统请在各自的项目中，使用一个静态类设置各自的代码，<br>
	 * 设置时编码要大于20<br>
	 * 负数表示系统异常，如果有必要的话<br>
	 **/
	/**
	 * 失败，值为2.
	 */
	public static final int FAIL = 2;
	/**
	 * 成功，值为1.
	 */
	public static final int SUCCESS = 1;
	
	/** 验证码错误，包括手机验证码和页面验证码，值为3。*/
	public static final int CODE_ERR = 3;
	/** 业务异常，值为4。 */
	public static final int BUSINESS_ERR = 4;
	/** 传入参数不正确，包括未传完整参数，传入参数格式不对等，值为5。 */
	public static final int PARAM_INCORRECT = 5;
	/** SESSION为空，超时也会为空，值为6。 */
	public static final int SESS_TIMEOUT = 6;
	/** 系统异常，值为9。*/
	public static final int SYS_ERR = 9;
	/** 文件类型错误：值为10 */
	public static final int FILE_TYPE = 10;
	
	/*********** 用户相关的错误码20-39 *************/
	/** 用户未登录，值为23。 */
	public static final int USER_NOT_LOGIN = 23;
	/** 用户不存在，值为20 */
	public static final int USER_NOT_EXIST = 20;
	/** 用户存在多个，值为21 */
	public static final int USER_MULT = 21;
	/** 用户名或密码错误，值为22 */
	public static final int USER_PWD_ERR = 22;
	
	/*********** 订单相关的错误码40-59 *************/
	/** 订单状态错误，不允许被修改为目标状态，如未支付就直接退款。值为40。 */
	public static final int ORDER_STATUS_ERR = 40;
	/** 商品库存不足，无法生成订单。 */
	public static final int ORDER_WARE_NUM = 41;
	/** 订单不存在。 */
	public static final int ORDER_NON_EXIST = 42;
	
	/*********** 支付相关的错误码60-79 *************/
	/** 支付方式不存在。 */
	public static final int PAY_NO_METHOD = 60;
	/** 支付用户不存在。 */
	public static final int PAY_NO_USER = 61;
	/** 支付失败。 */
	public static final int PAY_FAIL = 62;
	/** 支付异常：如商户号不对，没有传入openid等。 */
	public static final int PAY_ERR = 63;
	/** 支付请求不存在。 */
	public static final int PAY_NO_APPLY = 64;
	/** 支付请求状态错误。 */
	public static final int PAY_ERR_STATUS = 65;
	/** 支付金额不匹配。 */
	public static final int PAY_ERR_AMOUNT = 66;
	/** 签名验证失败 */
	public static final int PAY_ERR_SIGN = 67;
	
	public static final String RANDOM_CODE_KEY = "RANDOM_VC";//放到session中的key
	
	/** 记录错误码对应的中文描述 */
	public static Map<Integer, String> errCodeMap = new HashMap<Integer, String>();
	static {
		errCodeMap.put(FAIL, "失败");
		errCodeMap.put(SUCCESS, "成功");
		errCodeMap.put(CODE_ERR, "验证码有误");
		errCodeMap.put(BUSINESS_ERR, "发生业务错误");
		errCodeMap.put(PARAM_INCORRECT, "您传入的参数有误");
		errCodeMap.put(SESS_TIMEOUT, "session超时");
		errCodeMap.put(SYS_ERR, "系统异常");
		errCodeMap.put(FILE_TYPE, "文件类型不支持");
		errCodeMap.put(USER_NOT_EXIST, "用户不存在");
		errCodeMap.put(USER_MULT, "用户存在多个");
		errCodeMap.put(USER_PWD_ERR, "用户名或密码错误");
		errCodeMap.put(ORDER_STATUS_ERR, "订单状态错误");
		errCodeMap.put(ORDER_WARE_NUM, "库存不足");
		errCodeMap.put(ORDER_NON_EXIST, "订单不存在");
		errCodeMap.put(PAY_NO_METHOD, "支付方式不存在");
		errCodeMap.put(PAY_NO_USER, "支付用户不存在");
		errCodeMap.put(PAY_FAIL, "支付失败");
		errCodeMap.put(PAY_ERR, "支付异常");
		errCodeMap.put(PAY_NO_APPLY, "支付申请ID错误");
		errCodeMap.put(PAY_ERR_STATUS, "支付申请状态错误");
		errCodeMap.put(PAY_ERR_AMOUNT, "支付金额不匹配");
		errCodeMap.put(PAY_ERR_SIGN, "签名验证失败");
	}
	
	public ResultTo() {
		this.code = SUCCESS;
		this.msg = errCodeMap.get(this.code);
	}
	
	/** 错误代码。 */
	private int code;
	/** 结果说明。 */
	private String msg;
	
	public ResultTo (int code) {
		this.code = code;
	}
	public ResultTo (int code, String msg) {
		this.code = code;
		this.msg = msg;
	}

	public int getCode() {
		return code;
	}

	public void setCode(int code) {
		this.code = code;
		this.msg = errCodeMap.get(code);
	}

	public String getMsg() {
		return msg;
	}

	public void setMsg(String msg) {
		this.msg = msg;
	}
}
